// 导入用户集合构造函数
const { User } = require('../model/user');
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');

module.exports = async (req, res) => {
	// 接收请求参数
	const { username, password } = req.fields;
	let user = await User.findOne({ username });
	// 查询到了用户
	if (user) {
		// 将客户端传递过来的密码和用户信息中的密码进行比对
		// true 比对成功
		// false 对比失败
		let isValid = await bcrypt.compare(password, user.password);
		// 如果密码比对成功
		// 定义secret密钥
		const secretKey = 'myblog No1 ^-^'
		if (isValid) {
			// 生成token
			const token = jwt.sign({ username }, secretKey,{
				expiresIn:'24h'
			});
			// req.session.username = username
			res.send({
				data: {
					token
				},
				meta: {
					msg: '登录成功',
					status: 200
				}
			})
		} else {
			// 密码错误
			res.send({
				data: null,
				meta: {
					msg: '请求失败',
					status: 400
				}
			})
		}
	} else {
		// 没有查询到用户
		res.send({
			data: null,
			meta: {
				msg: '请求失败',
				status: 400
			}
		})
	}
}